package com.sft.grxz.utils;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

/**
 * @author sunfutao
 * 
 * 2015年10月21日
 */
public class POIUtil {
	/**
	 * 导出单标签excel
	 * @param top 表头
	 * @param datas 数据,每一行数据集合为datas中的一个元素
	 * @return
	 */
	public static Workbook excelExp(List<String> top,List<List<String>> datas){
		 // 创建excel工作簿
        Workbook wb = new HSSFWorkbook();
        // 创建第一个sheet（页），并命名
        Sheet sheet = wb.createSheet();
        sheet.autoSizeColumn(1, true); 
        // 手动设置列宽。第一个参数表示要为第几列设；，第二个参数表示列的宽度，n为列高的像素数。
        for(int i=0;i<top.size();i++){
            sheet.setColumnWidth(i, (int)(35.7 * 150));
        }

        // 创建第一行
        Row row = sheet.createRow((int) 0);

        // 创建两种单元格格式
        CellStyle cs = wb.createCellStyle();
        CellStyle cs2 = wb.createCellStyle();

        // 创建两种字体
        Font f = wb.createFont();
        Font f2 = wb.createFont();

        // 创建第一种字体样式（用于列名）
        f.setFontHeightInPoints((short) 10);
        f.setColor(IndexedColors.BLACK.getIndex());
        f.setBoldweight(Font.BOLDWEIGHT_BOLD);

        // 创建第二种字体样式（用于值）
        f2.setFontHeightInPoints((short) 10);
        f2.setColor(IndexedColors.BLACK.getIndex());

//      Font f3=wb.createFont();
//      f3.setFontHeightInPoints((short) 10);
//      f3.setColor(IndexedColors.RED.getIndex());

        // 设置第一种单元格的样式（用于列名）
        cs.setFont(f);
        cs.setBorderLeft(CellStyle.BORDER_THIN);
        cs.setBorderRight(CellStyle.BORDER_THIN);
        cs.setBorderTop(CellStyle.BORDER_THIN);
        cs.setBorderBottom(CellStyle.BORDER_THIN);
        cs.setAlignment(CellStyle.ALIGN_CENTER);

        // 设置第二种单元格的样式（用于值）
        cs2.setFont(f2);
        cs2.setBorderLeft(CellStyle.BORDER_THIN);
        cs2.setBorderRight(CellStyle.BORDER_THIN);
        cs2.setBorderTop(CellStyle.BORDER_THIN);
        cs2.setBorderBottom(CellStyle.BORDER_THIN);
        cs2.setAlignment(CellStyle.ALIGN_CENTER);
        //设置列名
        for(int i=0;i<top.size();i++){
            Cell cell = row.createCell(i);
            cell.setCellValue(top.get(i));
            cell.setCellStyle(cs);
        }
        //设置每行每列的值
        for (int i = 0; i < datas.size(); i++) {
        	// Row 行,Cell 方格 , Row 和 Cell 都是从0开始计数的
            // 创建一行，在页sheet上
            Row row1 = sheet.createRow(i+1);
            // 在row行上创建一个方格
            List<String> dats=datas.get(i);
            for(short j=0;j<dats.size();j++){
            	 Cell cell = row1.createCell(j);
                 cell.setCellValue(dats.get(j)==null||"null".equals(dats.get(j))?"":dats.get(j));
                 cell.setCellStyle(cs2);
            }
        }
        return wb;
	}
}
